To initialize and start a computing system, a processor typically reads initialization instructions (may also be referred to as “boot code”) out of a dedicated memory chip during an initialization process (may also be referred to as “booting” or “boot” process). The initialization functions may be called to identify, test, and initialize system devices such as a video display card, storage device and other hardware. After executing the initialization instructions a computing system is set to a known state, so that any software stored on the storage device can be loaded and executed.
After the initialization instructions are read, the processor reads and attempts to execute operating system instructions. Non-volatile memory, for example, a NAND based flash memory is now commonly used to store operating system instructions and applications. The NAND based memory although cost effective and stable, may have challenges. For example, NAND based flash memory may include defective blocks. This presents a challenge during the initialization process because the computing system may expect operating system instruction code and/or application instruction code to be present at certain expected locations of the NAND memory. However, the instructions may not be present at the expected locations because of defective blocks, which may jeopardize the initialization process. Continuous efforts are being made to efficiently store executable instructions to initialize a computing system.